home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / Dev / Amiga-E / E_v3.2a / Src / Gfx / IntMandel.e < prev    next >
Text File  |  1992-09-02  |  1KB  |  57 lines

  1. -> Yet Another Mandel, translated from Oberon. integer this time.
  2.  
  3. OPT OSVERSION=37, REG=5
  4.  
  5. MODULE 'tools/clonescreen'
  6.  
  7. CONST DEPTH=4,COLOURS=16    -> related :-)
  8. CONST ITERDEPTH=25
  9.  
  10. PROC main() HANDLE
  11.  
  12.   DEF zr,zi,ar,ai,dr,di,sr,si,st,x,y,i,
  13.       screen=NIL,font=NIL,win=NIL,xsize,ysize,depth
  14.  
  15.   screen,font:=openclonescreen('Workbench','YAM',DEPTH)
  16.   win:=backdropwindow(screen)
  17.   depth,xsize,ysize:=getcloneinfo(screen)
  18.  
  19.   x:=256/COLOURS*2
  20.   FOR i:=0 TO COLOURS-1 DO SetColour(screen,i,0,i*x,i*x)
  21.  
  22.   sr:=$400000/xsize    -> shrink horiz
  23.   si:=$300000/ysize    -> shrink vert
  24.   st:=$140000*-2    -> move side
  25.   zi:=$160000        -> move up
  26.  
  27.   FOR y:=ysize-1 TO 0 STEP -1
  28.     IF CtrlC() THEN Raise("^C")
  29.     zi:=zi-si
  30.     zr:=st
  31.     FOR x:=0 TO xsize-1
  32.       i:=0; ar:=zr; ai:=zi
  33.       REPEAT
  34.         dr:=Shr(ar,10); di:=Shr(ai,10)
  35.         ai:=dr*2*di+zi
  36.         dr:=dr*dr; di:=di*di
  37.         ar:=dr-di+zr
  38.         i++
  39.       UNTIL (i>ITERDEPTH) OR (dr+di>$400000)
  40.       Plot(x,y,Mod(i,COLOURS))
  41.       zr:=zr+sr
  42.     ENDFOR
  43.   ENDFOR
  44.  
  45.   EasyRequestArgs(NIL,[20,0,'Wake Up!','I''m finished!','Ok!'],0,NIL)
  46.  
  47. EXCEPT DO
  48.  
  49.   closeclonescreen(screen,font,win)
  50.  
  51.   SELECT exception
  52.     CASE "SCR"; WriteF('no screen!\n')
  53.     CASE "WIN"; WriteF('no window!\n')
  54.   ENDSELECT
  55.  
  56. ENDPROC
  57.